import sequelize, { testConnection, syncDatabase } from '../../config/db.js'
import bcrypt from 'bcryptjs'
import { User, Article, Comment } from '../models/index.js'
import dotenv from 'dotenv'

// 加载环境变量
dotenv.config()

// 创建初始数据
const createInitialData = async () => {
  try {
    // 创建管理员用户
    const adminPassword = await bcrypt.hash('admin123', 10)
    const admin = await User.create({
      username: 'admin',
      password: adminPassword,
      role: 'admin'
    })
    console.log('✅ 管理员用户已创建')

    // 创建示例文章
    const article1 = await Article.create({
      title: '欢迎来到我的博客',
      content: '这是我的第一篇博客文章。在这里，我将分享我的想法和经验。',
      author: admin.username,
      status: 'published'
    })

    const article2 = await Article.create({
      title: '关于技术分享',
      content: '技术分享是学习的重要方式，通过分享我们可以更好地理解和掌握知识。',
      author: admin.username,
      status: 'published'
    })

    console.log('✅ 示例文章已创建')

    // 创建示例评论
    await Comment.create({
      content: '很棒的文章！',
      articleId: article1.id,
      author: admin.username
    })

    await Comment.create({
      content: '感谢分享！',
      articleId: article2.id,
      author: admin.username
    })

    console.log('✅ 示例评论已创建')
    console.log('🎉 数据库初始化完成！')
  } catch (error) {
    console.error('❌ 创建初始数据失败:', error.message)
  }
}

// 主函数
const main = async () => {
  try {
    console.log('🔄 开始初始化数据库...')
    
    // 测试连接
    const isConnected = await testConnection()
    if (!isConnected) {
      console.error('无法连接到数据库')
      process.exit(1)
    }

    // 同步数据库（强制重新创建表）
    await syncDatabase(true)
    
    // 创建初始数据
    await createInitialData()
    
    console.log('✅ 数据库初始化完成！')
    process.exit(0)
  } catch (error) {
    console.error('❌ 数据库初始化失败:', error)
    process.exit(1)
  }
}

// 运行脚本
main() 